/**********************************************************************************************/
/* FBL_I_TaskManager.h                                                       				  */
/*                                                                       					  */
/* Copyright Paradigma, 1993-2006															  */
/* All Rights Reserved                                                   					  */
/**********************************************************************************************/

#ifndef _FBL_I_TaskManager_h 
	#define _FBL_I_TaskManager_h

#include <VShared/FBL/publ/Headers/FBL.h>

#include <VShared/FBL/publ/Headers/FBL_pre_header.h>


/**********************************************************************************************/
FBL_Begin_Namespace


/**********************************************************************************************/
SMART_INTERFACE(I_Task);
SMART_INTERFACE(I_TaskManager);


//**********************************************************************************************/
#ifdef __cplusplus
extern "C" {
#endif

	I_TaskManager*			GetTaskManager( void );

#ifdef __cplusplus
}
#endif


/**********************************************************************************************/
interface FBL_SHARED_EXP_CLASS I_TaskManager : public I_Unknown
{
virtual						~I_TaskManager( void );

	// --- Properties ---
	
		// <TaskCount>
virtual ulong				get_TaskCount( void ) const = 0;


	// --- Methods ---

virtual	void				AppendTask( I_Task_Ptr inNewTask ) = 0;


virtual	void				RemoveTask( I_Task_Ptr inTask ) = 0;

							/// Returns a task by index.
virtual I_Task_Ptr			Task( ulong inIndex ) const = 0;

							/// Returns a task by name.
virtual I_Task_Ptr			Task( const UChar* inName ) const = 0;

							/// Cancel inTask.
virtual void				CancelTask( I_Task_Ptr inTask ) const = 0;

};


/**********************************************************************************************/
FBL_End_Namespace

#include <VShared/FBL/publ/Headers/FBL_post_header.h>

#endif // _FBL_I_TaskManager_h
